package GestorViajes.DAOs;

import GestorViajes.Common.HibernateUtil;
import GestorViajes.Models.Producto;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class ProductoDAO {
    
    private Session sesion;
    private Transaction tx; 
    
    private void iniciaOperacion() throws HibernateException
    {
        sesion = HibernateUtil.getSessionFactory().openSession();
        tx = sesion.beginTransaction();
    }
    
    private void manejaExcepcion(HibernateException he) throws HibernateException
    {
        tx.rollback();
        throw new HibernateException("Ocurrió un error en la capa de acceso a datos", he);
    }
    
    public long add(Producto contacto)
    { 
        long id = 0;
        try 
        { 
            iniciaOperacion(); 
            id = (Long)sesion.save(contacto); 
            tx.commit(); 
        }catch(HibernateException he) 
        { 
            manejaExcepcion(he);
            throw he; 
        }finally 
        { 
            sesion.close(); 
        }  
        return id; 
    }
}
